perm filename FLAT.LSP[W82,JMC]1 blob
sn#635470 filedate 1982-01-21 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002
C00014 ENDMK
C⊗;
;;;
(wipe-out)
(get-proofs lispax)
(proof flat)
(context lispax#1:*)
;;; flat(x,u) has an imbedded call which makes proofs more difficult.
(decl (flat) |ground⊗ground→ground| constant)
(axiom |∀x u.flat(x,u) = if atom x then x~u else flat(car x,flat(cdr x, u))|)
(lname definfo)
(decl (flatten) |ground → ground| constant)
(axiom |∀x.flatten(x) = if atom x then list(x)
else flatten(car x)*flatten(cdr x)|)
(lname definfo)
(∀E PHI |λX.∀U.LISTP FLAT(X,U)| sexpinduction
|nil*([1#1#1]($definfo**sortinfo))*nil*([1#2#1#2]($definfo**sortinfo))
**simpinfo*nil*([1](der))*nil|
sortinfo)
(∀e phi |λx.listp flatten(x)| sexpinduction
|nil*([1#1#1]($definfo*nil**simpinfo*nil))*nil
*([1#1#2](&definfo*nil**simpinfo*nil))*([1#1](imp(listappend)*der))*nil|
sortinfo)
(lname listpflatten)
(∀e phi |λx.∀u.flat(x,u)=flatten(x)*u| sexpinduction
|nil*([1#1#1](&definfo*nil*$definfo**simpinfo*nil))*nil
*([1#1#2](&definfo**simpinfo*nil))|
listpflatten sortinfo)
(assume |(∀u.flat(x,u)=flatten(x)*u)∧(∀u.flat(y,u)=flatten(y)*u)|)
(trw |flat(x,flat(y,u))| |*-1| listpflatten sortinfo)
(∀i u)
(ci -3 -1)
(∀i (x y))
(trw |∀x u.flat(x,u) = flatten(x)*u| |imp(-6,-1)*taut|)
(∀e phi |λx.∀u.flat(x,u)=flatten(x)*u| sexpinduction
|nil|
listpflatten sortinfo)
(∀e phi |λx.∀u.flat(x,u)=flatten(x)*u| sexpinduction
|nil*([1#1#1](&definfo*$simpinfo*nil))|
listpflatten sortinfo)
(∀e phi |λx.∀u.flat(x,u)=flatten(x)*u| sexpinduction
|nil*([1#1#1](&definfo*$simpinfo*nil*$definfo*nil))|
listpflatten sortinfo)
(∀e phi |λx.∀u.flat(x,u)=flatten(x)*u| sexpinduction
|nil*([1#1#1](&definfo*$simpinfo*nil*$definfo**simpinfo*nil))|
listpflatten sortinfo)
(∀e phi |λx.∀u.flat(x,u)=flatten(x)*u| sexpinduction
|nil*([1#1#1](&definfo*$simpinfo*nil*$definfo**simpinfo*nil))*nil|
listpflatten sortinfo)
(∀e phi |λx.∀u.flat(x,u)=flatten(x)*u| sexpinduction
|nil*([1#1#1](&definfo*nil*$definfo**simpinfo*nil))*nil|
listpflatten sortinfo)
(∀e phi |λx.∀u.flat(x,u)=flatten(x)*u| sexpinduction
|nil*([1#1#1](&definfo*nil*$definfo**simpinfo*nil))*nil
*([1#1#2](&definfo**simpinfo))|
listpflatten sortinfo)
(∀E PHI |λX.∀U.LISTP FLAT(X,U)| sexpinduction
|nil*([1#1#1]($definfo**sortinfo))|
sortinfo)
(∀E PHI |λX.∀U.LISTP FLAT(X,U)| sexpinduction
|nil*([1#1#1]($definfo**sortinfo*nil))|
sortinfo)
(∀E PHI |λX.∀U.LISTP FLAT(X,U)| sexpinduction
|nil*([1#1#1]($definfo*nil**sortinfo*nil))|
sortinfo)
(∀E PHI |λX.∀U.LISTP FLAT(X,U)| sexpinduction
|nil*([1#1#1]($definfo*nil**sortinfo*nil))*nil|
sortinfo)
(∀E PHI |λX.∀U.LISTP FLAT(X,U)| sexpinduction
|nil*([1#1#1]($definfo*nil**sortinfo*nil))*nil
*([1#1#2]($definfo*nil*sortinfo*nil))|
sortinfo)
(∀E PHI |λX.∀U.LISTP FLAT(X,U)| sexpinduction
|nil*([1#1#1]($definfo*nil**sortinfo*nil))*nil
*([1#1#2]($definfo*nil*sortinfo*nil))*nil|
sortinfo)
(∀E PHI |λX.∀U.LISTP FLAT(X,U)| sexpinduction
|nil*([1#1#1]($definfo*nil**sortinfo*nil))*nil
*([1#1#2]($definfo*nil*sortinfo*nil))*sortinfo*nil|
sortinfo)
;;;;
(∀E PHI |λX.∀U.LISTP FLAT(X,U)| sexpinduction
|nil*([1#1#1]($definfo**sortinfo))*nil*([1#2#1#2]($definfo**sortinfo))
**simpinfo*nil*([1](der))*nil|
sortinfo)